/*
 * Copyright (c) 2013-2018 上海汇数数据. All rights reserved.
 * @(#) Region.java 2018-08-19 13:34
 */

package cn.jh.common.core.cn;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.inferred.freebuilder.FreeBuilder;
import org.jetbrains.annotations.Nullable;


/**
 * 中国行政区域信息。
 *
 * @author Fuchun
 * @since 1.0
 */
@FreeBuilder
@JsonDeserialize(builder = Region.Builder.class)
public interface Region {

    /**
     * 行政区域编号。
     */
    String getCode();

    /**
     * 行政区域名称（简称）。
     */
    String getName();

    /**
     * 行政区域等级。
     */
    RegionLevel getLevel();

    /**
     * 行政区域全称。
     */
    String getFullName();

    /**
     * 行政区域所属上级区域编号。如果为1级域区({@link RegionLevel#STATE})，则为{@code null}。
     */
    @Nullable
    String getParent();

    /**
     * {@code Region} builder.
     */
    class Builder extends Region_Builder {}
}
